#include "stdio.h"
#include "string.h"
#include "stdlib.h"

/// @brief 匹配字符串 并统计个数
/// @param src 源字符串
/// @param str 需要统计的字符串
/// @return
char *match_string(char *src, char *str)
{
    if (src == NULL || str == NULL)
    {
        return NULL;
    }

    int str_len = strlen(str), targetstrlen = strlen(src); //先拿到字符串长度
    printf("target[%d][%s] src[%d][%s]\n", str_len, str, targetstrlen, src);

    char *buf = NULL;
    int count = 0;

    for (int i = 0; i < targetstrlen; i++)
    {
        if (buf == NULL)
        {
            buf = malloc(str_len); //准备一块大小同目标字符串一样大小的空间
        }

        memset(buf, 0, sizeof(buf)); //清空

        if (i + str_len > targetstrlen) //判定边界,如果达到源字符串长度就不必继续了
        {
            if (buf != NULL)
            {
                printf("match count [%d]\n", count); //输出最终统计结果

                free(buf); //释放空间
            }
            return "yes";
        }

        memcpy(buf, src + i, str_len); //源字符串从index地址向下拷贝长度为目标字符串长度的内容到准备好的空间
        if (strcmp(str, buf) == 0)     //比较
        {
            count++; //有相同则记为一次成功匹配

            printf("%d %s\n", i, buf); //打印输出当时匹配到的index值和内容
        }
    }
   
    return NULL;
}